import numpy as np
import cv2


def get_limits(color):
    # 将输入的BGR颜色转换为OpenCV需要的形状（1x1x3的数组）
    # np.uint8确保数据类型为8位无符号整数（图像像素的标准类型）
    c = np.uint8([[color]])

    # 将BGR颜色转换为HSV颜色空间
    # HSV更适合颜色检测，其中H通道表示色调，对光照变化更不敏感
    hsvC = cv2.cvtColor(c, cv2.COLOR_BGR2HSV)

    # 计算HSV阈值范围：
    # - H（色调）通道：以目标颜色的H值为中心，上下浮动10（允许一定的颜色偏差）
    # - S（饱和度）通道：下限100，上限255（过滤低饱和度的灰色/白色区域）
    # - V（明度）通道：下限100，上限255（过滤过暗的区域）
    lowerLimit = hsvC[0][0][0] - 10, 100, 100
    upperLimit = hsvC[0][0][0] + 10, 255, 255

    # 将阈值转换为numpy数组，确保数据类型为uint8（符合OpenCV处理要求）
    lowerLimit = np.array(lowerLimit, dtype=np.uint8)
    upperLimit = np.array(upperLimit, dtype=np.uint8)

    return lowerLimit, upperLimit
